home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 24
/
Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso
/
Aminet
/
dev
/
c
/
AmiVoGL_MDEV.lha
/
drivers
/
ibmpc
/
hgc.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-09-29
|
2KB
|
157 lines
#include "vogl.h"
#define H_PIX_ASPECT 1.45 /* For real PC monitor */
/*#define H_PIX_ASPECT 1.0 /* For SUN emulator */
extern unsigned int _cur_color;
extern void
hgc_tmode(),
hgc_gmode(),
hgc_config(),
set_loc(),
hgcline();
extern int hgc_clear(),
hgc_backbuf(),
pc_fill(),
pc_font(),
pc_getkey(),
pc_checkkey(),
pc_locator(),
pc_string(),
hgc_frontbuf(),
hgc_swapbuf(),
setmode();
static int
noop()
{
return (-1);
}
static int
hgc_init()
{
vdevice.sizeX = 347 * H_PIX_ASPECT;
vdevice.sizeY = 347;
vdevice.sizeSx = 719;
vdevice.sizeSy = 347;
vdevice.depth = 1;
hgc_config();
hgc_gmode(); /* Also sets _buffer_segment */
_cur_color = 0;
hgc_clear();
_cur_color = 1;
set_loc(5); /* For the mouse */
pc_locinit(vdevice.sizeSx, vdevice.sizeSy);
return (1);
}
/*
* hgc_vclear
*
* Just clears the current viewport.
*/
static
hgc_vclear()
{
int x[4], y[4];
if (vdevice.maxVx != vdevice.sizeSx
|| vdevice.maxVy != vdevice.sizeSy
|| vdevice.minVx != vdevice.sizeSx
|| vdevice.minVy != vdevice.sizeSy) {
x[0] = x[3] = vdevice.minVx;
y[0] = y[1] = vdevice.maxVy;
y[2] = y[3] = vdevice.minVy;
x[1] = x[2] = vdevice.maxVx;
pc_fill(5, x, y);
} else {
hgc_clear();
}
return(0);
}
/*
* hgc_exit
*
* Sets the display back to text mode.
*/
static
hgc_exit()
{
unshowmouse();
/*hgc_tmode();
_cur_color = 0;
_hgc_clear();
*/
(void)setmode(3);
return (1);
}
static
hgc_draw(x, y)
int x, y;
{
hgcline(vdevice.cpVx, vdevice.sizeSy - vdevice.cpVy, x, vdevice.sizeSy - y, _cur_color);
vdevice.cpVx = x;
vdevice.cpVy = y;
return(0);
}
static
hgc_char(c)
int c;
{
hgcchar(c, vdevice.cpVx, vdevice.sizeSy - vdevice.cpVy, _cur_color, 1 - _cur_color);
return(0);
}
static
hgc_color(i)
int i;
{
_cur_color = (i > 0 ? 1 : 0);
return(0);
}
static DevEntry hgcdev = {
"hercules",
"large",
"small",
hgc_backbuf,
hgc_char,
pc_checkkey,
hgc_vclear,
hgc_color,
hgc_draw,
hgc_exit,
pc_fill,
pc_font,
hgc_frontbuf,
pc_getkey,
hgc_init,
pc_locator,
noop,
pc_string,
hgc_swapbuf
};
/*
* _hgc_devcpy
*
* copy the pc device into vdevice.dev.
*/
_hgc_devcpy()
{
vdevice.dev = hgcdev;
return(0);
}